<?php

namespace app\checkin\model;

use think\admin\Model;

/**
 * 积分明细模型
 */
class PointsRecord extends Model
{
    /**
     * 数据表名
     * @var string
     */
    protected $name = 'checkin_points_record';

    /**
     * 自动时间戳
     * @var bool
     */
    protected $autoWriteTimestamp = 'datetime';

    /**
     * 只有创建时间
     * @var bool
     */
    protected $updateTime = false;

    /**
     * 类型数据
     * @var array
     */
    public static $typeMap = [
        1 => '获得',
        2 => '消费',
        3 => '调整',
    ];

    /**
     * 来源数据
     * @var array
     */
    public static $sourceMap = [
        'checkin' => '打卡',
        'exchange' => '兑换',
        'adjust' => '调整',
    ];

    /**
     * 获取类型文本
     * @param $value
     * @param $data
     * @return string
     */
    public function getTypeTextAttr($value, $data)
    {
        return self::$typeMap[$data['type']] ?? '未知';
    }

    /**
     * 获取来源文本
     * @param $value
     * @param $data
     * @return string
     */
    public function getSourceTextAttr($value, $data)
    {
        return self::$sourceMap[$data['source']] ?? '未知';
    }

    /**
     * 关联会员
     * @return \think\model\relation\HasOne
     */
    public function member()
    {
        return $this->hasOne(Member::class, 'id', 'member_id')->bind(['member_name' => 'name', 'member_phone' => 'phone']);
    }

    /**
     * 关联门店
     * @return \think\model\relation\HasOne
     */
    public function store()
    {
        return $this->hasOne(Store::class, 'id', 'store_id')->bind(['store_name' => 'name']);
    }

    /**
     * 关联操作员
     * @return \think\model\relation\HasOne
     */
    public function operator()
    {
        return $this->hasOne(\think\admin\model\SystemUser::class, 'id', 'operator_id')->bind(['operator_name' => 'username']);
    }
}
